package com.yss.reportworld.domain.kettle;

import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 动态字段配置对象 rw_db_etl_config_dynamic_field
 *
 * @author yss
 * @date 2023-07-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_etl_config_dynamic_field")
public class EtlConfigDynamicField extends Model<EtlConfigDynamicField> {
    public static final String SHEET_NAME = "参数信息";
    /**
     * 技术主键
     */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 参数分组ID
     */
    @ExcelIgnore
    @TableField("GROUP_ID")
    private String groupId;

    @ExcelProperty("分组名称")
    @TableField(exist = false)
    @ExcelValid(message = "【参数信息】【分组名称】不能为空")
    private String groupName;

    /**
     * 中文名称
     */
    @ExcelProperty("中文名")
    @TableField("CN_NAME")
    @ExcelValid(message = "【参数信息】【中文名】不能为空")
    private String cnName;

    /**
     * 英文名称
     */
    @ExcelProperty("英文名")
    @TableField("EN_NAME")
    @ExcelValid(message = "【参数信息】【英文名】不能为空")
    private String enName;

    /**
     * 展现形式
     */
    @ExcelProperty(value = "展现形式", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=下拉,1=文本框,2=年月日(YYYYMMDD),3=日期(YYYY-MM-DD HH:mm:ss),4=单选,5=下拉多选,6=日期范围,7=日期时间范围,8=树形结构")
    @TableField("SHOW_TYPE")
    @ExcelValid(message = "【参数信息】【展现形式】不能为空")
    private Integer showType;

    /**
     * 类型
     */
    @ExcelProperty(value = "类型", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=无,1=字典值,2=SQL,3=API地址,4=组合树")
    @TableField("FIELD_TYPE")
    @ExcelValid(message = "【参数信息】【类型】不能为空")
    private Integer fieldType;

    /**
     * 数据类型
     */
    @ExcelProperty(value = "数据类型", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=String,1=Integer,2=Boolean,3=Float,4=Double,5=年月日(yyyyMMdd),6=日期(yyyy-MM-dd hh:mm:ss)")
    @TableField("DATA_TYPE")
    @ExcelValid(message = "【参数信息】【数据类型】不能为空")
    private Integer dataType;
    /**
     * 内容
     */
    @ExcelProperty("内容")
    @TableField("CONTENT")
    private String content;

    /**
     * 默认值
     */
    @ExcelProperty("默认值")
    @TableField("DEFAULT_VAL")
    private String defaultVal;

    /**
     * 排序
     */
    @ExcelProperty("顺序号")
    @TableField("SORT")
    @ExcelValid(message = "【参数信息】【顺序号】不能为空")
    private Integer sort;


    /**
     * 是否必填
     */
    @ExcelProperty(value = "是否必填", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=否,1=是")
    @TableField("IS_REQUIRED")
    @ExcelValid(message = "【参数信息】【是否必填】【是否必填】不能为空")
    private Integer isRequired;

    /**
     * 是否启用：0 否，1 是
     */
    @ExcelProperty(value = "是否启用", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=否,1=是")
    @TableField("IS_USERD")
    @ExcelValid(message = "【参数信息】【是否启用】不能为空")
    private Integer isUserd;


    /**
     * 是否在任务清单显示
     */
    @ExcelProperty(value = "是否显示", converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=否,1=是")
    @TableField("IS_SHOW")
    private Integer isShow;


    /**
     * 映射ID
     */
    @ExcelIgnore
    @TableField("MAPPING_ID")
    private String mappingId;
    /**
     * 创建人
     */
    @ExcelIgnore
    @TableField("CREATE_PRSN")
    private String createPrsn;

    /**
     * 修改时间
     */
    @ExcelIgnore
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("MDFY_TIME")
    private Date mdfyTime;

    /**
     * 修改人
     */
    @ExcelIgnore
    @TableField("MDFY_PRSN")
    private String mdfyPrsn;


    /**
     * 是否是统计页维度
     */
    @ExcelIgnore
    @TableField("IS_DIMENSION")
    private Integer isDimension;

    /**
     * 是否是统计页条件
     */
    @ExcelIgnore
    @TableField("IS_CONDITION")
    private Integer isCondition;

    /**
     * 是否是统计页统计
     */
    @ExcelIgnore
    @TableField("IS_STATISTICS")
    private Integer isStatistics;

    /**
     * 是否是历史页条件
     */
    @ExcelIgnore
    @TableField("IS_HI_CONDITION")
    private Integer isHiCondition;

    /**
     * 是否是历史页展示列
     */
    @ExcelIgnore
    @TableField("IS_HI_COLUMN")
    private Integer isHiColumn;

    /**
     * 字段属性
     */
    @ExcelIgnore
    @TableField("FIELD_PROP")
    private Integer fieldProp;

    /**
     * 关联字段id
     */
    @ExcelIgnore
    @TableField("RELATION_FIELD_ID")
    private String relationFieldId;

    /**
     * 数据源
     */
    @ExcelIgnore
    @TableField("DS_SOURCE")
    private String dsSource;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;

}
